Tính chất ALGOL

ALGOL 60 như được xác định chính thức không có cơ sở I / O; việc triển khai tự xác định theo cách hiếm khi tương thích với nhau. Ngược lại, ALGOL 68 cung cấp một thư viện rộng lớn các cơ sở chuyển tiếp (đầu vào / đầu ra).

ALGOL 60 cho phép hai chiến lược đánh giá cho việc truyền tham số: gọi theo giá trị chung và gọi theo tên. Gọi theo tên có tác dụng nhất định trái ngược với gọi theo tham chiếu. Ví dụ, không chỉ định tham số là giá trị hoặc tham chiếu, không thể phát triển thủ tục sẽ hoán đổi giá trị của hai tham số nếu tham số thực được truyền vào là một biến số nguyên và một mảng được lập chỉ mục bởi cùng một biến số nguyên đó [20] Hãy nghĩ đến việc chuyển một con trỏ để hoán đổi (i, A [i]) vào một hàm. Bây giờ mỗi lần hoán đổi được tham chiếu, nó được đánh giá lại. Nói i: = 1 và A [i]: = 2, vì vậy mỗi lần hoán đổi được tham chiếu, nó sẽ trả về kết hợp khác của các giá trị ([1,2], [2,1], [1,2], v.v.). Một tình huống tương tự xảy ra với một hàm ngẫu nhiên được truyền dưới dạng đối số thực tế.

Call-by-name được nhiều nhà thiết kế trình biên dịch biết đến với "thunks" thú vị được sử dụng để thực hiện nó. Donald Knuth đã nghĩ ra "thử nghiệm đàn ông hay con trai" để tách các trình biên dịch thực hiện chính xác "đệ quy và các tham chiếu không cục bộ". Bài kiểm tra này chứa một ví dụ về cách gọi theo tên.

ALGOL 68 được định nghĩa bằng cách sử dụng một hình thức ngữ pháp hai cấp độ được phát minh bởi Adriaan van Wijngaarden và mang tên ông. Các ngữ pháp Van Wijngaarden sử dụng một ngữ pháp không ngữ cảnh để tạo ra một bộ sản phẩm vô hạn sẽ nhận ra một chương trình ALGOL 68 cụ thể; Đáng chú ý, họ có thể thể hiện loại yêu cầu mà trong nhiều tiêu chuẩn ngôn ngữ lập trình khác được gắn nhãn "ngữ nghĩa" và phải được thể hiện bằng văn xuôi ngôn ngữ tự nhiên mơ hồ, và sau đó được triển khai trong trình biên dịch dưới dạng mã ad hoc gắn liền với ngôn ngữ chính thức trình phân tích cú pháp.